package com.buss.member.entity;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

/**   
 * @Title: Entity
 * @Description: 注册用户
 *
 */
@Entity
@Table(name = "hx_user", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
@SuppressWarnings("serial")
public class GeneralUserEntity implements java.io.Serializable {
	/**用户表主键*/
	private java.lang.String id;
	/**真实姓名*/
	private java.lang.String realname;
	/**入会形式（1个人，2公司）*/
	private java.lang.Integer jointype;
	/**密码*/
	private java.lang.String pwd;
	/**手机号*/
	private java.lang.String mphone;
	/**电子邮箱*/
	private java.lang.String email;
	/**身份证号*/
	private java.lang.String idcord;
	/**公司名称*/
	private java.lang.String companyname;
	/**目前职务*/
	private java.lang.String job;
	/**核审状态*/
	private java.lang.Integer checkstatus;
	/**用户级别*/
	private java.lang.Integer levelclass;
	/**是否删除*/
	private java.lang.Integer isDelete;
	/**创建时间*/
	private java.util.Date joinDate;
	/**更新时间*/
	private java.util.Date updateInfoDate;
	/**出于安全避免别人随意更改用户密码*/
	private java.lang.Integer isupdatepwd;
	
	/**角色列表*/
	private List<UserAndRoleEntity> roles;
	
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  用户表主键
	 */
	@Id
	@GeneratedValue(generator = "paymentableGenerator")
	@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
	@Column(name ="ID",nullable=false,length=32)
	public java.lang.String getId(){
		return this.id;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  用户表主键
	 */
	public void setId(java.lang.String id){
		this.id = id;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  真实姓名
	 */
	@Column(name ="REALNAME",nullable=true,length=32)
	public java.lang.String getRealname(){
		return this.realname;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  真实姓名
	 */
	public void setRealname(java.lang.String realname){
		this.realname = realname;
	}
	/**
	 *方法: 取得java.lang.Integer
	 *@return: java.lang.Integer  入会形式（1个人，2公司）
	 */
	@Column(name ="JOINTYPE",nullable=true,precision=10,scale=0)
	public java.lang.Integer getJointype(){
		return this.jointype;
	}

	/**
	 *方法: 设置java.lang.Integer
	 *@param: java.lang.Integer  入会形式（1个人，2公司）
	 */
	public void setJointype(java.lang.Integer jointype){
		this.jointype = jointype;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  密码
	 */
	@Column(name ="PWD",nullable=true,length=32)
	public java.lang.String getPwd(){
		return this.pwd;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  密码
	 */
	public void setPwd(java.lang.String pwd){
		this.pwd = pwd;
	}
	@Column(name ="mphone",nullable=false,length=11)
	public java.lang.String getMphone(){
		return this.mphone;
	}

	public void setMphone(java.lang.String mphone){
		this.mphone = mphone;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  电子邮箱
	 */
	@Column(name ="EMAIL",nullable=true,length=64)
	public java.lang.String getEmail(){
		return this.email;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  电子邮箱
	 */
	public void setEmail(java.lang.String email){
		this.email = email;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  身份证号
	 */
	@Column(name ="IDCORD",nullable=true,length=32)
	public java.lang.String getIdcord(){
		return this.idcord;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  身份证号
	 */
	public void setIdcord(java.lang.String idcord){
		this.idcord = idcord;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  公司名称
	 */
	@Column(name ="COMPANYNAME",nullable=true,length=255)
	public java.lang.String getCompanyname(){
		return this.companyname;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  公司名称
	 */
	public void setCompanyname(java.lang.String companyname){
		this.companyname = companyname;
	}
	/**
	 *方法: 取得java.lang.String
	 *@return: java.lang.String  目前职务
	 */
	@Column(name ="JOB",nullable=true,length=32)
	public java.lang.String getJob(){
		return this.job;
	}

	/**
	 *方法: 设置java.lang.String
	 *@param: java.lang.String  目前职务
	 */
	public void setJob(java.lang.String job){
		this.job = job;
	}
	/**
	 *方法: 取得java.lang.Integer
	 *@return: java.lang.Integer  核审状态
	 */
	@Column(name ="CHECKSTATUS",nullable=true,precision=10,scale=0)
	public java.lang.Integer getCheckstatus(){
		return this.checkstatus;
	}

	/**
	 *方法: 设置java.lang.Integer
	 *@param: java.lang.Integer  核审状态
	 */
	public void setCheckstatus(java.lang.Integer checkstatus){
		this.checkstatus = checkstatus;
	}
	/**
	 *方法: 取得java.lang.Integer
	 *@return: java.lang.Integer  用户级别
	 */
	@Column(name ="LEVELCLASS",nullable=true,precision=10,scale=0)
	public java.lang.Integer getLevelclass(){
		return this.levelclass;
	}

	/**
	 *方法: 设置java.lang.Integer
	 *@param: java.lang.Integer  用户级别
	 */
	public void setLevelclass(java.lang.Integer levelclass){
		this.levelclass = levelclass;
	}
	/**
	 *方法: 取得java.lang.Integer
	 *@return: java.lang.Integer  是否删除
	 */
	@Column(name ="IS_DELETE",nullable=true,precision=10,scale=0)
	public java.lang.Integer getIsDelete(){
		return this.isDelete;
	}

	/**
	 *方法: 设置java.lang.Integer
	 *@param: java.lang.Integer  是否删除
	 */
	public void setIsDelete(java.lang.Integer isDelete){
		this.isDelete = isDelete;
	}
	/**
	 *方法: 取得java.util.Date
	 *@return: java.util.Date  创建时间
	 */
	@Column(name ="JOINDATE",nullable=true)
	public java.util.Date getJoinDate(){
		return this.joinDate;
	}

	/**
	 *方法: 设置java.util.Date
	 *@param: java.util.Date  创建时间
	 */
	public void setJoinDate(java.util.Date joinDate){
		this.joinDate = joinDate;
	}
	/**
	 *方法: 取得java.util.Date
	 *@return: java.util.Date  更新时间
	 */
	@Column(name ="UPDATEINFODATE",nullable=true)
	public java.util.Date getUpdateInfoDate(){
		return this.updateInfoDate;
	}

	/**
	 *方法: 设置java.util.Date
	 *@param: java.util.Date  更新时间
	 */
	public void setUpdateInfoDate(java.util.Date updateInfoDate){
		this.updateInfoDate = updateInfoDate;
	}
	
	//　OneToMany关联到了AdminRole这个类，由AdminRole这个类来维护多对一的关系，mappedBy="admin"
	@OneToMany(cascade=CascadeType.ALL,mappedBy="user")
	@LazyCollection(LazyCollectionOption.EXTRA)//
	public List<UserAndRoleEntity> getRoles() {
		return roles;
	}

	public void setRoles(List<UserAndRoleEntity> roles) {
		this.roles = roles;
	}

	@Column(name ="ISUPDATEPWD",nullable=true,precision=10,scale=0)
	public java.lang.Integer getIsupdatepwd() {
		return isupdatepwd;
	}

	public void setIsupdatepwd(java.lang.Integer isupdatepwd) {
		this.isupdatepwd = isupdatepwd;
	}
}
